package com.micro.modual.service;

import com.micro.core.frame.service.BasicsService;
import com.micro.core.resp.RespJson;
import com.micro.modual.entity.MessageModule;
import com.micro.modual.model.bo.messagemodule.MessageModuleBO;
import com.micro.modual.model.dto.messagemodule.MessageModuleShowBO;


/**
*  <h1>消息来源表:记录当前消息从哪块来的,可以是组织活动.系统通知等等 接口</h1>
 * @author LevelCoder
 * @version V1.0.0
 * @email LevelCoder@126.com
 * @date 2020-08-04 00:11:10
 */
public interface MessageModuleService extends BasicsService<MessageModule,Long>{

    /**
     * <h2>新增消息来源表:记录当前消息从哪块来的,可以是组织活动.系统通知等等详情</h2>
     * @param messageModuleBO {@link MessageModuleBO} 消息来源表:记录当前消息从哪块来的,可以是组织活动.系统通知等等 新增/修改 请求对象
     * @return {@link RespJson} 返回结果基础类
     */
    RespJson addMessageModule(MessageModuleBO messageModuleBO);

    /**
     * <h2>修改消息来源表:记录当前消息从哪块来的,可以是组织活动.系统通知等等详情</h2>
     * @param messageModuleBO  {@link MessageModuleBO} 消息来源表:记录当前消息从哪块来的,可以是组织活动.系统通知等等 新增/修改 请求对象
     * @return {@link RespJson} 返回结果基础类
     */
    RespJson editMessageModule(MessageModuleBO messageModuleBO);

    /**
     * <h2>根据主键编号删除消息来源表:记录当前消息从哪块来的,可以是组织活动.系统通知等等信息</h2>
     * @param id  消息来源表:记录当前消息从哪块来的,可以是组织活动.系统通知等等 主键编号
     * @return  {@link RespJson} 返回结果基础类
     */
    RespJson deleteMessageModule(Long id);

    /**
     * 修改消息模块是否显示
     * @param messageModuleShowBO
     * @return
     */
    RespJson modifyMessageModuleShow(MessageModuleShowBO messageModuleShowBO);

    /**
     * <h2>校验模块名称是否存在</h2>
     * @param moduleName  消息模块名称
     * @return  {@link RespJson} 返回结果基础类
     */
    RespJson validataMessageMouduleNameExist(String moduleName);

    /**
     * <h2>校验模块编号是否存在</h2>
     * @param moduleCode  消息模块编号
     * @return  {@link RespJson} 返回结果基础类
     */
    RespJson validataMessageMouduleCodeExist(String moduleCode);
}
